package com.aviator.executor;

import com.googlecode.aviator.annotation.Function;
import com.googlecode.aviator.annotation.Ignore;
import com.googlecode.aviator.annotation.Import;
import com.googlecode.aviator.annotation.ImportScope;

/**
 * @Author: Jiangxx
 * @Date: 2021/12/30
 * @Description: 定制化:定制化可以使用注解的形式实现；@Import 可以定制命名空间、导入的方法类型静态还是实例
 * 使用@Function注解可以重命名函数名，默认使用原来的名字
 * 使用@Ignore注解可以在导入的时候忽略被该注解注释的方法
 */
@Import(ns = "test", scopes = {ImportScope.Static})
public class FunctionTest {

    /**
     * 定义一个可变参数的方法
     * @param args
     * @return
     */
    @Function(rename = "JOIN")
    public static String join(final String... args) {
        if (args == null || args.length == 0) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        boolean wasFirst = true;
        for (int i = 0; i < args.length; i++) {
            if (wasFirst) {
                sb.append(args[i]);
                wasFirst = false;
            } else {
                sb.append(",").append(args[i]);
            }
        }
        return sb.toString();
    }

    public String isBill(String params) {
        if (params != null && params.equals("Bill")) {
            return params;
        }
        return null;
    }

    @Ignore
    public static String getName() {
        return "LitchiShell";
    }

    @Ignore
    public static boolean isBlank(String params) {
        if (params != null && params.equals("")) {
            return true;
        }
        return false;
    }
}
